package com.yserp.project.erp.order.productbom.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yserp.common.utils.mybatis.MybatisPlusUtil;
import com.yserp.project.erp.order.productbom.domain.ProductionBom;
import com.yserp.project.erp.order.productbom.domain.ProductionBomItem;
import com.yserp.project.erp.order.productbom.mapper.ProductionBomItemMapper;
import com.yserp.project.erp.order.productbom.service.IProductionBomItemService;
import com.yserp.project.erp.order.productbom.service.IProductionBomService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * BOM子Service业务层处理
 *
 * @author yserp
 * @date 2022-08-09
 */
@Service
public class ProductionBomItemServiceImpl extends ServiceImpl<ProductionBomItemMapper, ProductionBomItem> implements IProductionBomItemService {
    @Resource
    private ProductionBomItemMapper productionBomItemMapper;
    @Autowired
    private IProductionBomService productionBomService;


    /**
     * 查询BOM子列表
     *
     * @param productionBomItem BOM子
     * @return BOM子
     */
    @Override
    public List<ProductionBomItem> selectProductionBomItemList(ProductionBomItem productionBomItem) {
        QueryWrapper<ProductionBomItem> queryWrapper = new QueryWrapper<>();
        MybatisPlusUtil.notNullField(productionBomItem, queryWrapper);
        return productionBomItemMapper.selectList(queryWrapper);
    }

    @Override
    public List<ProductionBomItem> selectProductionBomItemListByMainId(Long mainId) {
        ProductionBomItem productionBomItem = new ProductionBomItem();
        productionBomItem.setMainId(mainId);
        return this.selectProductionBomItemList(productionBomItem);
    }

    @Override
    public List<ProductionBomItem> selectProductionBomItemListByProductId(Long productId) {
        List<ProductionBomItem> list = new ArrayList<>();
        ProductionBom productionBom = new ProductionBom();
        productionBom.setProductId(productId);
        List<ProductionBom> productionBoms = productionBomService.selectProductionBomList(productionBom);
        if(CollectionUtils.isEmpty(productionBoms)){
            return list;
        }
        ProductionBom bom = productionBoms.get(0);
        Long mainId = bom.getId();
        BigDecimal productMinNum = bom.getProductMinNum();
        List<ProductionBomItem> productionBomItems = this.selectProductionBomItemListByMainId(mainId);
        for (ProductionBomItem productionBomItem : productionBomItems) {
            //做了特殊处理，存放主表数量
            productionBomItem.setDelFlag(productMinNum.toString());
        }
        return productionBomItems;
    }


}
